package com.dragon.modules.yuegou.enums;

import org.apache.commons.lang3.StringUtils;

import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * 悦商惠小程序菜单
 * 
 * @author liuwu
 *
 */
public enum EventListenMenu {

	/**
	 * 注册送商品
	 */
	REGISTER_TO_SEND_GOODS(0, "注册送商品"),

	/**
	 * 注册送积分
	 */
	REGISTER_TO_SEND_CREDITS(1, "注册送积分"),

	/**
	 * 注册送停车劵
	 */
	REGISTER_FOR_A_PARKING_TICKET(2, "注册送停车劵"),

	/**
	 * 注册送优惠券
	 */
	SIGN_UP_TO_SEND_COUPONS(3, "注册送优惠券"),

	/**
	 * 注册送套餐
	 */
	SIGN_UP_TO_SEND_PACKAGE(4, "注册送套餐"),

	/**
	 * 完善资料送商品
	 */
	COMPLETE_TO_SEND_GOODS(5, "完善资料送商品"),

	/**
	 * 注册送积分
	 */
	COMPLETE_TO_SEND_CREDITS(6, "完善资料送积分"),

	/**
	 * 完善资料送停车劵
	 */
	COMPLETE_FOR_A_PARKING_TICKET(7, "完善资料送停车劵"),

	/**
	 * 完善资料送优惠券
	 */
	COMPLETE_TO_SEND_COUPONS(8, "完善资料送优惠券"),

	/**
	 * 完善资料送套餐
	 */
	COMPLETE_TO_SEND_PACKAGE(9, "完善资料送套餐"),

	/**
	 * 会员等级升降
	 */
	MEMBER_GRADE_RELEGATION(10, "会员等级升降");


	/**
	 * 枚举标识
	 */
	private final Integer code;

	/**
	 * 别名
	 */
	private final String alias;

	private EventListenMenu(Integer code, String alias) {
		this.code = code;
		this.alias = alias;
	}

	public Integer getValue() {
		return code;
	}

	/**
	 * 枚举标识
	 *
	 * @return code
	 */
	public Integer getCode() {
		return code;
	}

	/**
	 * 别名
	 *
	 * @return alias
	 */
	public String getAlias() {
		return alias;
	}

	/**
	 * 把code转化为费用类型枚举
	 *
	 * @param code 代码
	 * @return
	 */
	public static EventListenMenu from(Integer code) {
		if (code == null) {
			return null;
		}
		return CODE_MAP.get(code);
	}

	/**
	 * 把alias转化为费用类型枚举
	 *
	 * @param alias 代码
	 * @return
	 */
	public static EventListenMenu fromAlias(String alias) {
		if (StringUtils.isEmpty(alias)) {
			return null;
		}
		return ALIAS_MAP.get(alias);
	}

	/**
	 * Code Map for CardForm
	 */
	private static final Map<Integer, EventListenMenu> CODE_MAP = Stream.of(EventListenMenu.values())
			.collect(Collectors.toMap(EventListenMenu::getCode, e -> e));

	/**
	 * Alias Map for CardForm
	 */
	private static final Map<String, EventListenMenu> ALIAS_MAP = Stream.of(EventListenMenu.values())
			.collect(Collectors.toMap(EventListenMenu::getAlias, e -> e));


}
